#ifndef NAMEDEFINITION_H
#define NAMEDEFINITION_H

#include <QString>

// Abbreviations
// Disp: dispense
// WH: work holder
// BWH: bonder work holder
// STC: sensor tray conveyer
// LT: lens tray
// ST: sensor tray
// LTL: lens tray loader
// Mag: magazine
// STIE: sensor tray input elevator
// STOE: sensor tray output elevator

namespace AxisName
{
    // Dispense  module
    const QString DispWHBelt = "DispWHBelt";

    // Bonder work holder module
    const QString BWHBelt = "BWHBelt";
    const QString STCBelt = "STCBelt";
    const QString STCBeltZ = "STCBeltZ";
    const QString BWHOpticY = "BWHOpticY";

    // Lens tray module
    const QString LTBufferBelt = "LTBufferBelt";
    const QString LTLoaderBelt = "LTLoaderBelt";
    const QString LTLoaderTrackX = "LTLoaderTrackX";

    // Bonder head
    const QString BHMiniZ = "BHMiniZ";
    const QString BHTheta = "BHTheta";
}    // namespace AxisName

namespace DiName
{
    // Dispense  module
    const QString DispWHLeftTraySNR = "DispWHLeftTraySNR";
    const QString DispWHStageTraySNR = "DispWHStageTraySNR";

    // Bonder work holder module
    const QString BWHStageTraySNR = "BWHStageTraySNR";
    const QString STCRightTraySNR = "STCRightTraySNR";
    const QString STCLeftTraySNR = "STCLeftTraySNR";

    // Lens tray module
    const QString LTMagSNR = "LTMagSNR";
    const QString LTMagTraySNR = "LTMagTraySNR";
    const QString LTBufferLeftTraySNR = "LTBufferLeftTraySNR";
    const QString LTBufferRightTraySNR = "LTBufferRightTraySNR";
    const QString LTLoaderStageSNR = "LTLoaderStageSNR";
    const QString LTLoaderLeftSNR = "LTLoaderLeftSNR";

    // Sensor tray elevator
    const QString STIEMagSNR1 = "STIEMagSNR1";
    const QString STIEMagSNR2 = "STIEMagSNR2";
    const QString STOEMagSNR1 = "STOEMagSNR1";
    const QString STOEMagSNR2 = "STOEMagSNR2";
}    // namespace DiName

namespace DoName
{
    // Dispense  module
    const QString LeftShotGlueOut = "LeftShotGlueOut";
    const QString RightShotGlueOut = "RightShotGlueOut";
}    // namespace DoName

namespace CylName
{
    // Dispense  module
    //    const QString DispWHPushTray = "DispWHPushTray";  // Obsoleted
    const QString DispWHStopper = "DispWHStopper";
    const QString LeftDispZLock = "LeftDispZLock";
    const QString RightDispZLock = "RightDispZLock";

    // Bonder work holder
    const QString BWHStopperLeft = "BWHStopperLeft";
    const QString BWHStopperRight = "BWHStopperRight";
    //    const QString BWHPushTray = "BWHPushTray";    // Obsoleted
    const QString STCOutputKicker = "STCOutputKicker";

    // Lens tray module
    const QString LTKicker = "LTKicker";
    const QString LTLUnloadKicker = "LTLUnloadKicker";
    const QString LTLClamp = "LTLClamp";
    const QString LTLLeftDam = "LTLLeftDam";

    // Sensor tray elevator
    const QString STIECylinder = "STIECylinder";
    const QString STIEKicker = "STIEKicker";
    const QString STOECylinder = "STOECylinder";
}    // namespace CylName

namespace VacuumName
{
    // Dispense  module
    const QString DispWHVacuum = "DispWHVacuum";

    // Bonder work holder
    const QString BWHVacuum = "BWHVacuum";

    // Bonder head
    const QString BondHeadVacuum = "BondHeadVacuum";
}    // namespace VacuumName

// single axis module
namespace SAxisModuleName
{
    // Dispense  module
    const QString DispWHBeltZ = "DispWHBeltZ";
    const QString LeftDispZ = "LeftDispZ";
    const QString RightDispZ = "RightDispZ";

    // Bonder work holder
    const QString BWHBeltZ = "BWHBeltZ";
    const QString BWHTrackX = "BWHTrackX";
    const QString BWHTrackZ = "BWHTrackZ";
    const QString BWHOpticZ = "BWHOpticZ";

    // Lens tray module
    const QString LTMagZ = "LTMagZ";
    const QString LTBufferBeltZ = "LTBufferBeltZ";
    const QString LTLoaderBeltZ = "LTLoaderBeltZ";
    const QString LTLoaderTrackX = "LTLoaderTrackX";

    // Bonder head
    const QString BondHeadTheta = "BondHeadTheta";
    const QString BondHeadMiniZ = "BondHeadMiniZ";
    const QString BondHeadZ = "BondHeadZ";

    // Sensor tray elevator
    const QString STIE = "STIE";
    const QString STOE = "STOE";
}    // namespace SAxisModuleName

namespace XYModuleName
{
    // Bonder work holder
    const QString BWHOpticXY = "BWHOpticXY";
}    // namespace XYModuleName

namespace XYZModuleName
{
    const QString BondHeadXYZ = "BondHeadXYZ";
    const QString LeftDispXYZ = "LeftDispXYZ";
    const QString RightDispXYZ = "RightDispXYZ";
}    // namespace XYZModuleName

namespace SAxisPosName
{
    const QString StandbyPos = "StandbyPos";

    // BeltZModule
    const QString UpPos = "UpPos";
    const QString DownPos = "DownPos";

    // DispWHBeltZ
    //    const QString PushTrayPos = "PushTrayPos";    // Obsoleted

    // DispZ
    const QString MeasureHeightPos = "MeasureHeightPos";

    // LTMagZ   STIE
    const QString KickFirtTrayPos = "KickFirtTrayPos";
    const QString KickLastTrayPos = "KickLastTrayPos";

    // LTMagZ   STOE
    const QString RetrieveFirstTrayPos = "RetrieveFirstTrayPos";
    const QString RetrieveLastTrayPos = "RetrieveLastTrayPos";

    // LTMagZ
    const QString ChangeMagazinePos = "ChangeMagazinePos";

    // LTBufferBeltZ  BonderWHTrackX  LTLoaderTrackX
    const QString LoadTrayPos = "LoadTrayPos";
    const QString UnloadTrayPos = "UnloadTrayPos";

    // LTBufferBeltZ
    const QString SafetyPosUponLTL = "SafetyPosUponLTL";

    // LTTrackX
    const QString SafetyPosForLTBufferZ = "SafetyPosForLTBufferZ";
    const QString LeftLensPrPos = "LeftLensPrPos";

    // LTTrackX    BWHOpticZ
    const QString CaliGlassPrPos = "CaliGlassPrPos";

    // BWHOpticZ
    const QString BondPrPos = "BondPrPos";
    const QString PostBondPrPos = "PostBondPrPos";

    // BondHeadZ
    const QString STPickPlacePos = "STPickPlacePos";
    const QString LTPickPlacePos = "LTPickPlacePos";
}    // namespace SAxisPosName

namespace XYPosName
{
    const QString StandbyPos = "StandbyPos";

    // DispXY BWHOpticXY
    const QString PrLeftTop = "PrLeftTop";

    // BWHOpticXY
    const QString CaliGlassPrPos = "CaliGlassPrPos";
}    // namespace XYPosName

namespace XYZPosName
{
    const QString StandbyPos = "StandbyPos";

    // BondHeadXYZ
    const QString UplookPos = "UplookPos";
    const QString LTPickPlaceCaliGlassPos = "LTPickPlaceCaliGlassPos";
    const QString STPickPlaceCaliGlassPos = "STPickPlaceCaliGlassPos";

    // DispXYZ
    const QString MeasureTrayLevelLeftTop = "MeasureTrayLevelLeftTop";
    const QString MeasureTrayLevelRightBottom = "MeasureTrayLevelRightBottom";
    const QString CalibrateNozzelToLaserPos = "CalibrateNozzelToLaserPos";
    const QString LaserToCameraOffsetPrPos = "LaserToCameraOffsetPrPos";
    const QString LaserToCameraOffsetLaserPos = "LaserToCameraOffsetLaserPos";
    const QString ShotGlueDotPos = "ShotGlueDotPos";
    const QString GlueDotPrPos = "GlueDotPrPos";
    const QString PrLeftTop = "PrLeftTop";
}    // namespace XYZPosName

namespace CameraName
{
    const QString DWHDownlookCamera = "DWHDownlookCamera";
    const QString BWHDownlookCamera = "BWHDownlookCamera";
    const QString LTDownlookCamera = "LTDownlookCamera";
    const QString UplookCamera = "UplookCamera";
}    // namespace CameraName

namespace WorkerName
{
    const QString DispenseWorkHolder("DispWH");
    const QString LeftDispenseHead("LDispH");
    const QString RightDispenseHead("RDispH");
    const QString BonderWorkHolder("BonderWorkHolder");
    const QString SensorTrayConveyer("SensorTrayConveyer");
    const QString LensTrayMagazine("LensTrayMagazine");
    const QString LensTrayBuffer("LensTrayBuffer");
    const QString LensTrayLoader("LensTrayLoader");
    const QString BonderHead("BonderHead");
    const QString STIE("STIE");
    const QString STOE("STOE");
}    // namespace WorkerName

namespace VLName
{
    const QString TrayRawSensorLocation = "TrayRawSensorLocation";
    const QString LaserToCameraOffsetCaliLocation = "LaserToCameraOffsetCaliLocation";
    const QString GlueDotLocation = "GlueDotLocation";
    const QString LTCaliGlassLocation = "LTCaliGlassLocation";
    const QString LTLensLocation = "LTLensLocation";
    const QString LTVacancyLocation = "LTVacancyLocation";
    const QString STCaliGlassLocation = "STCaliGlassLocation";
    const QString STSensorLocation = "STSensorLocation";
    const QString PostBondLocation = "PostBondLocation";
    const QString CaliGlassUplookLocation = "CaliGlassUplookLocation";
    const QString LensUplookRectLocation = "LensUplookRectLocation";
    const QString LensUplookCircleLocation = "LensUplookCircleLocation";

    const QString MoveBWHDLCameraLocation = "MoveBWHDLCameraLocation";
}    // namespace VLName

namespace CaliName
{
    const QString TrayRawSensorCalibration = "TrayRawSensorCalibration";
    const QString LaserToCameraOffsetCalibration = "LaserToCameraOffsetCalibration";
    const QString GlueDotCalibration = "GlueDotCalibration";
    const QString LTCaliGlassCalibration = "LTCaliGlassCalibration";
    const QString STCaliGlassCalibration = "STCaliGlassCalibration";
    const QString CaliGlassUplookCalibration = "CaliGlassUplookCalibration";
    const QString LensUplookCalibration = "LensUplookCalibration";

    const QString MoveBWHDLCameraCalibration = "MoveBWHDLCameraCalibration";
}    // namespace CaliName

#endif    // NAMEDEFINITION_H
